package com.nkzy.bigevent.mapper;

import com.nkzy.bigevent.pojo.Category;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 分类数据访问层接口
 * 提供对 category 表的基本 CRUD 操作
 */
@Mapper
public interface CategoryMapper {

    /**
     * 根据ID查询分类
     * @param id 分类ID
     * @return 对应的分类对象，如果不存在则返回null
     */
    @Select("SELECT * FROM category WHERE id = #{id}") // 查询指定ID的分类
    Category selectById(Integer id);

    /**
     * 查询所有分类
     * @return 包含所有分类的列表
     */
    @Select("SELECT * FROM category") // 查询所有分类
    List<Category> selectAll();

    /**
     * 插入新分类
     * @param category 要插入的分类对象
     * @return 影响的行数
     */
    @Insert("INSERT INTO category(category_name, category_alias, create_user, create_time, update_time) " +
            "VALUES(#{categoryName}, #{categoryAlias}, #{createUser}, #{createTime}, #{updateTime})") // 插入新分类
    @Options(useGeneratedKeys = true, keyProperty = "id") // 自动生成主键并设置到对象中
    void insert(Category category);

    /**
     * 更新分类信息
     * @param category 包含更新信息的分类对象
     * @return 影响的行数
     */
    @Update("UPDATE category SET category_name = #{categoryName}, category_alias = #{categoryAlias}, " +
            "create_user = #{createUser}, update_time = #{updateTime} WHERE id = #{id}") // 更新指定ID的分类
    void update(Category category);

    /**
     * 根据ID删除分类
     * @param id 要删除的分类ID
     * @return 影响的行数
     */
    @Delete("DELETE FROM category WHERE id = #{id}") // 删除指定ID的分类
    void deleteById(Integer id);
}